//
//  LKTabBar.swift
//  weiBo
//
//  Created by Lukj on 2017/3/26.
//  Copyright © 2017年 lukj. All rights reserved.
//

import UIKit

protocol LKTabBarDelegate: NSObjectProtocol {
    
    func didComposeButton()
    
}

class LKTabBar: UITabBar {

    //  懒加载控件
    lazy var composeButton: UIButton = {
       
        let button = UIButton()
        //  设置不同状态的背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), for: .normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), for: .highlighted)
        //  设置不同状态的图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), for: .normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), for: .highlighted)
        //  根据内容设置大小
        button.sizeToFit()
        
        button.addTarget(self, action: #selector(composeButtonAction), for: .touchUpInside)
        
        return button
    }()
    
    
    //  设置点击composeButtonAction的闭包
    var composeButtonActionClosure: (()->())?
    //  定义代理对象
    weak var lkdelegate: LKTabBarDelegate?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    
    func setupUI() {
        //  设置背景图片,防止push出现黑影
        self.backgroundImage = UIImage(named: "tabbar_background")
        
        addSubview(composeButton)
    }
    
    
    //  设置子控件布局
    override func layoutSubviews() {
        //  一定要写
        super.layoutSubviews()
        //  设置中心X
        composeButton.centerX = width * 0.5
        //  设置中心Y
        composeButton.centerY = height * 0.5
        //  计算每一个按钮的宽度
        let itemWidth = width / 5
        //  记录遍历按钮的索引
        var index = 0
        //  遍历所有的子控件
        for subView in subviews {
            if subView .isKind(of: NSClassFromString("UITabBarButton")!) {
                //  给每个子控件设置大小
                subView.width = itemWidth
                //  设置UITabBarButton的x坐标
                subView.x = CGFloat(index) * itemWidth
                //  记录UITabBarButton的索引
                index += 1
                //  如果是第二个UITabBarButton需要加上一个宽度,放到加号按钮后面
                if index == 2 {
                    index += 1
                }
            }
        }
    }
    
    
    // MARK: ---composeButtonAction点击事件
    @objc private func composeButtonAction() {
        //  二选一
        //  代理
//        lkdelegate?.didComposeButton()
        //  执行闭包
        composeButtonActionClosure?()
    }
    
    
}
